/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.nys.conci.cliente.bean;

import com.nys.conci.base.BeanBase;
import com.nys.conci.base.excepcion.ExcepcionManager;
import com.nys.conci.cliente.entidad.EstadoCliente;
import com.nys.conci.cliente.entidad.Persona;
import com.nys.conci.cliente.entidad.PlanCliente;
import com.nys.conci.cliente.entidad.PlanPago;
import com.nys.conci.usuario.entidad.Especialidad;
import com.nys.conci.usuario.servicio.ServicioAdministracion;
import com.nys.conci.usuario.servicio.ServicioControlUsuario;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;

/**
 *
 * @author Yeudy10
 */
@ManagedBean
@ViewScoped
public class BeanConsultaClientes extends BeanBase {

    //<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    //<<<<<<<<<<<<<<<<<<<<<<<<<<<<     VARIABLES     >>>>>>>>>>>>>>>>>>>>>>>>>>>>
    //<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    @Inject
    private ServicioControlUsuario scu;
    @Inject
    private ServicioAdministracion sa;    
    private List<PlanPago> lista_planes;
    private List<EstadoCliente> listado_estados;
    private List<Persona> lista_clientes;
    private Integer id_plan;
    private Integer id_estado;
    private String estado_nuevo;
    private Persona persona_select;
    private Persona Persona_tabla;
    
    private boolean mostrar_modal;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<  INICIALIZARORES  >>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    /**
     * Constructor
     */
    public BeanConsultaClientes() {
        this.inicializar();
    }

    /**
     * Inicializa las variables del bean, al acceder al constructor
     */
    private void inicializar() {
        try {
            lista_clientes = new ArrayList<Persona>();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    /**
     * Inicializas las variables y atributos del bean, despues del llamado del
     * constructor. Es utilizado para las inicializaciones que utilicen datos de
     * objetos injectados.
     */
    @Override
    @PostConstruct
    public void inicializarPost() {
        cargarPlanes();
        cargarEstado();
        cargarUsuarios();        
    }
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<      MÉTODOS      >>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<   

    public void cargarPlanes() {
        try {
            lista_planes = new ArrayList<PlanPago>();
            lista_planes = sa.consultarListaPlanesPago();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }
    
    public void cargarEstado() {
        try {            
            setListado_estados(new ArrayList<EstadoCliente>());
            listado_estados = sa.consultarListaEstadoCliente();
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }    

    public void cargarUsuarios() {
        try {            
            setLista_clientes(new ArrayList<Persona>());
            if ((getId_plan() == null || getId_plan() == 0) && (getId_estado() ==  null || getId_estado() == 0)) {
                setLista_clientes(scu.consultarPersonas("C"));
            } else {
                setLista_clientes(scu.consultarPersonasClientes(getId_estado(), getId_plan()));
            }
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }

    public void limpiar() {
        setId_plan(null);
        setId_estado(null);   
        cargarUsuarios();
    }

   
    
    public void seleccionarCliente() {
        try {
        } catch (Exception ex) {
            ExcepcionManager.manejarExcepcion(ex);
        }
    }    

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<      GET & SET      >>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************<<<<<<<<<<<<<<<<<<<<<<<<<<<<       

    /**
     * @return the persona_select
     */
    public Persona getPersona_select() {
        return persona_select;
    }

    /**
     * @param persona_select the persona_select to set
     */
    public void setPersona_select(Persona persona_select) {
        this.persona_select = persona_select;
    }

    /**
     * @return the Persona_tabla
     */
    public Persona getPersona_tabla() {
        return Persona_tabla;
    }

    /**
     * @param Persona_tabla the Persona_tabla to set
     */
    public void setPersona_tabla(Persona Persona_tabla) {
        this.Persona_tabla = Persona_tabla;
    }

    /**
     * @return the listado_estados
     */
    public List<EstadoCliente> getListado_estados() {
        return listado_estados;
    }

    /**
     * @param listado_estados the listado_estados to set
     */
    public void setListado_estados(List<EstadoCliente> listado_estados) {
        this.listado_estados = listado_estados;
    }

    /**
     * @return the lista_clientes
     */
    public List<Persona> getLista_clientes() {
        return lista_clientes;
    }

    /**
     * @param lista_clientes the lista_clientes to set
     */
    public void setLista_clientes(List<Persona> lista_clientes) {
        this.lista_clientes = lista_clientes;
    }

    /**
     * @return the mostrar_modal
     */
    public boolean isMostrar_modal() {
        return mostrar_modal;
    }

    /**
     * @param mostrar_modal the mostrar_modal to set
     */
    public void setMostrar_modal(boolean mostrar_modal) {
        this.mostrar_modal = mostrar_modal;
    }

    /**
     * @return the estado_nuevo
     */
    public String getEstado_nuevo() {
        return estado_nuevo;
    }

    /**
     * @param estado_nuevo the estado_nuevo to set
     */
    public void setEstado_nuevo(String estado_nuevo) {
        this.estado_nuevo = estado_nuevo;
    }

    /**
     * @return the lista_planes
     */
    public List<PlanPago> getLista_planes() {
        return lista_planes;
    }

    /**
     * @param lista_planes the lista_planes to set
     */
    public void setLista_planes(List<PlanPago> lista_planes) {
        this.lista_planes = lista_planes;
    }

    /**
     * @return the id_plan
     */
    public Integer getId_plan() {
        return id_plan;
    }

    /**
     * @param id_plan the id_plan to set
     */
    public void setId_plan(Integer id_plan) {
        this.id_plan = id_plan;
    }

    /**
     * @param id_estado the id_estado to set
     */
    public void setId_estado(Integer id_estado) {
        this.id_estado = id_estado;
    }

    /**
     * @return the id_estado
     */
    public Integer getId_estado() {
        return id_estado;
    }
}
